package 子数组最大平均数滑动窗口;

/**
 * 子数组最大平均数 滑动窗口
 * 给定一个整数数组，找出平均数最大且长度为k的下标连续的子数组，并输出该最大平均数。
 */
public class Solution {
    public static void main(String[] args) {
        int[] arr = new int[]{1, 12, -5, -6, 50, 3};

        double res = getMaxAvg(arr, 4);
        System.out.println("res = " + res);

    }


    /**
     * 滑动窗口
     */
    public static double getMaxAvg(int[] arr, int k) {

        if (arr.length < k) {
            return -1;
        }

        int maxSum = 0;
        for (int i = 0; i < k; i++) {
            maxSum += arr[i];
        }

        int currSum = maxSum;
        for (int i = k; i < arr.length; i++) {
            int sum = currSum - arr[i - k] + arr[i];
            maxSum = Math.max(sum, maxSum);
        }

        return 1.0 * maxSum / k;
    }

}
